package jee.boot.common;

import java.util.ArrayList;
import java.util.List;

/**
 * 系统常量
 */
public class CommonConstant {
    /**
     * 有效数据
     */
    public static final String DATA_STATUS_ACTIVE = "Y";
    /**
     * 无效数据
     */
    public static final String DATA_STATUS_INVALID = "N";
    /**
     * 被删除数据(逻辑)
     */
    public static final String DATA_STATUS_DELETED = "D";
    /**
     * 审计字段: 创建人
     */
    public static final String AUDIT_FIELD_CREATE_BY="createBy";
    /**
     * 审计字段: 创建时间
     */
    public static final String AUDIT_FIELD_CREATE_DATE="createDate";
    /**
     * 审计字段: 修改人
     */
    public static final String AUDIT_FIELD_UPDATE_BY="updateBy";
    /**
     * 审计字段: 修改时间
     */
    public static final String AUDIT_FIELD_UPDATE_DATE="updateDate";
    /**
     * 审计字段: 数据状态
     */
    public static final String AUDIT_FIELD_STATUS="status";
    /**
     * 审计字段: 备注
     */
    public static final String AUDIT_FIELD_REMARKS="remarks";
    /**
     * 审计字段: 创建人
     */
    public static final String AUDIT_COLUMN_CREATE_BY="create_by";
    /**
     * 审计字段: 创建时间
     */
    public static final String AUDIT_COLUMN_CREATE_DATE="create_date";
    /**
     * 审计字段: 修改人
     */
    public static final String AUDIT_COLUMN_UPDATE_BY="update_by";
    /**
     * 审计字段: 修改时间
     */
    public static final String AUDIT_COLUMN_UPDATE_DATE="update_date";
    /**
     * 审计字段: 数据状态
     */
    public static final String AUDIT_COLUMN_STATUS="status";
    /**
     * 审计字段: 备注
     */
    public static final String AUDIT_COLUMN_REMARKS="remarks";
    /**
     * 所有审计字段
     */
    public static List<String> AUDIT_FIELDS = new ArrayList<String>() {{
        add(AUDIT_FIELD_CREATE_BY);
        add(AUDIT_FIELD_CREATE_DATE);
        add(AUDIT_FIELD_UPDATE_BY);
        add(AUDIT_FIELD_UPDATE_DATE);
        add(AUDIT_FIELD_STATUS);
        add(AUDIT_FIELD_REMARKS);
    }};

    /**
     * 所有审计列
     */
    public static List<String> AUDIT_COLUMNS = new ArrayList<String>() {{
        add(AUDIT_COLUMN_CREATE_BY);
        add(AUDIT_COLUMN_CREATE_DATE);
        add(AUDIT_COLUMN_UPDATE_BY);
        add(AUDIT_COLUMN_UPDATE_DATE);
        add(AUDIT_COLUMN_STATUS);
        add(AUDIT_COLUMN_REMARKS);
    }};

    /**
     * 查询条件默认支持的操作
     */
    public static final List<String> OPERATE_LIST = new ArrayList<String>() {{
        // 标准操作
        add("=");
        add("like");
        add("not like");
        add("left like");
        add("right like");
        add(">");
        add(">=");
        add("<");
        add("<=");
        add("!=");
        add("<>");
        add("in");
        add("not in");
        add("is null");
        add("is not null");
        // 逻辑操作
        add("or");
        add("and");
        // 特殊操作(自己实现sql片段)
        add("sql");
        add("built-in");//内置sql片段的不需要做sql的防注入转义,仅后端内部使用,前端不可以使用

        // json 查询操作
        // 数据库存储为jsonObject类型,可以使用 a.remarks -> "$.id" LIKE "%123%" 这样的方式进行json查询
        // 数据库存储为jsonArray类型,可以使用 a.region -> "$[*].id" is null 这样的方式进行json查询
        add("->");
    }};
}
